home *** CD-ROM | disk | FTP | other *** search
- class BOSS2Attack3 extends EnemyAction {
- private int fxTime = 0;
- private boolean[] fShot = new boolean[3];
- private int fxSpeedY;
- private int fxWeight;
- private int fxSpeedX;
- private int nBound;
-
- public BOSS2Attack3(StgFrame var1) {
- super(var1);
- this.fShot[0] = false;
- this.fShot[1] = false;
- this.fShot[2] = false;
- this.fxSpeedY = 65536;
- this.fxWeight = 0;
- this.fxSpeedX = 0;
- this.nBound = 0;
- }
-
- public boolean action(EnemyIndex var1) {
- BOSS2Index var2 = (BOSS2Index)var1;
- int var3 = super.resource.getEnemySpeed();
- super.resource.getEnemy();
- PlayerShipIndex var4 = super.resource.getPlayerShipIndex();
- int var5 = ((StgObjectIndex)var1).getPosition().getX();
- ((StgObjectIndex)var4).getPosition().getX();
- int var6 = this.fxSpeedX;
- int var7 = this.fxSpeedY;
- var6 = Fixed.Mul(var6, 65536);
- var7 = Fixed.Mul(var7, 65536);
- ((StgObjectIndex)var1).movePosition(var6, var7, 0);
- if (((StgObjectAction)this).checkHitBg(var1, 1)) {
- while(((StgObjectAction)this).checkHitBg(var1, 1)) {
- }
-
- short var8 = (short)(Fixed.Random() >> 4);
- short var9 = 8192;
- short var10 = (short)('ΦÇÇ' - var9 / 2);
- int var11 = 524288 + (Fixed.Random() << 1);
- this.fxSpeedX = Fixed.Sin((short)(var10 + var8));
- this.fxSpeedY = Fixed.Cos((short)(var10 + var8));
- this.fxSpeedX = Fixed.Mul(this.fxSpeedX, var11);
- this.fxSpeedY = Fixed.Mul(this.fxSpeedY, var11);
- this.fxWeight = 24576 + (Fixed.Random() >> 2);
- if (var5 > 12058624) {
- this.fxSpeedX = Fixed.Mul(this.fxSpeedX, 24576);
- } else if (var5 < 8519680) {
- this.fxSpeedX = Fixed.Mul(this.fxSpeedX, 24576);
- }
-
- if (var5 > 14155776) {
- this.fxSpeedX = -this.fxSpeedX;
- } else if (var5 < 6553600) {
- this.fxSpeedX = this.fxSpeedX;
- } else if ((Fixed.Random() & 'ΦÇÇ') != 0) {
- this.fxSpeedX = this.fxSpeedX;
- } else {
- this.fxSpeedX = -this.fxSpeedX;
- }
-
- ++this.nBound;
- if (this.nBound == 8) {
- if (var2.getCount() != 3) {
- var1.setEnemyAction(new BOSS2Nomal(super.resource));
- } else {
- var1.setEnemyAction(new BOSS2TableMake(super.resource));
- }
- }
- }
-
- this.fxSpeedY += this.fxWeight;
- if (this.fxTime >= 0 && !this.fShot[0]) {
- this.putShot(var1);
- this.fShot[0] = true;
- }
-
- if (this.fxTime >= 1048576 && !this.fShot[1]) {
- this.putShot(var1);
- this.fShot[1] = true;
- }
-
- if (this.fxTime >= 2097152 && !this.fShot[2]) {
- this.putShot(var1);
- this.fShot[2] = true;
- }
-
- this.fxTime += var3;
- this.destroy(var1);
- return true;
- }
-
- private boolean putShot(EnemyIndex var1) {
- Enemy var2 = super.resource.getEnemy();
- Position var3 = ((StgObjectIndex)var1).getPosition();
- short var5 = Fixed.FixedToAngle(var3.getY() >> 4);
- short var6 = (short)(16384 + var5);
- short var7 = (short)(var6 / 16);
- short var8 = (short)(-(var6 / 2) + var7 * 2);
- short var9 = var8;
- int var10 = var3.getX() - 327680;
- int var11 = var3.getY() - 1441792;
-
- for(int var12 = 0; var12 != 12; ++var12) {
- int var13 = Fixed.Sin(var9);
- int var14 = Fixed.Cos(var9);
- var13 = Fixed.Mul(var13, 262144 + (Fixed.Random() << 1));
- var14 = Fixed.Mul(var14, 262144 + (Fixed.Random() << 1));
- ES13Index var4 = new ES13Index(new Position(var10, var11, 0), StgData.getSpriteAnimeES01Nomal(), new Position(196608, 196608, 0), 0, new ES13Nomal(super.resource), 0, 98304, 0, 1, var13, var14);
- ((StgObject)var2).add(var4);
- var10 += 65536;
- var9 += var7;
- }
-
- return true;
- }
-
- public boolean checkHitPlayerShip(EnemyIndex var1, PlayerShipIndex var2) {
- super.resource.getEnemy();
- return ((StgObjectIndex)var1).checkHit(var2);
- }
-
- public boolean checkHitPlayerShot(EnemyIndex var1, PlayerShotIndex var2) {
- boolean var5 = false;
- super.resource.getEnemy();
- if (((StgObjectIndex)var1).checkHit(var2)) {
- int var3 = var1.getHitPoint();
- int var4 = var2.getPower();
- var3 -= var4;
- if (var3 < 0) {
- var3 = 0;
- }
-
- var1.setHitPoint(var3);
- var5 = true;
- }
-
- return var5;
- }
-
- public boolean checkHitBom(EnemyIndex var1) {
- return true;
- }
-
- private boolean destroy(EnemyIndex var1) {
- super.resource.getEnemy();
- SpriteAnimeIndex var2 = ((StgObjectIndex)var1).getSpriteAnimeIndex();
- boolean var3 = false;
- Status var4 = super.resource.getStatus();
- if (var1.getHitPoint() == 0) {
- var4.add(var1.getScore());
- var2.setSpriteAnimeData(StgData.getSpriteAnimeDestroyA());
- var1.setEnemyAction(new BOSSDestroy(super.resource));
- var3 = true;
- }
-
- return var3;
- }
- }
-